home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / id3 / utils.h < prev    next >
Encoding:
C/C++ Source or Header  |  2007-04-10  |  3.1 KB  |  104 lines

  1. // -*- C++ -*-
  2. // $Id: utils.h,v 1.22 2002/07/02 22:11:03 t1mpy Exp $
  3.  
  4. // id3lib: a C++ library for creating and manipulating id3v1/v2 tags
  5. // Copyright 1999, 2000  Scott Thomas Haug
  6.  
  7. // This library is free software; you can redistribute it and/or modify it
  8. // under the terms of the GNU Library General Public License as published by
  9. // the Free Software Foundation; either version 2 of the License, or (at your
  10. // option) any later version.
  11. //
  12. // This library is distributed in the hope that it will be useful, but WITHOUT
  13. // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  14. // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
  15. // License for more details.
  16. //
  17. // You should have received a copy of the GNU Library General Public License
  18. // along with this library; if not, write to the Free Software Foundation,
  19. // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20.  
  21. // The id3lib authors encourage improvements and optimisations to be sent to
  22. // the id3lib coordinator.  Please see the README file for details on where to
  23. // send such submissions.  See the AUTHORS file for a list of people who have
  24. // contributed to id3lib.  See the ChangeLog file for a list of changes to
  25. // id3lib.  These files are distributed with id3lib at
  26. // http://download.sourceforge.net/id3lib/
  27.  
  28. #ifndef _ID3LIB_UTILS_H_
  29. #define _ID3LIB_UTILS_H_
  30.  
  31. #if defined HAVE_CONFIG_H
  32. #include <config.h>
  33. #endif
  34.  
  35. #include "id3/id3lib_streams.h"
  36. #include "id3/globals.h" //has <stdlib.h> "id3/sized_types.h"
  37. #include "id3/id3lib_strings.h"
  38.  
  39. namespace dami
  40. {
  41. #ifdef  MAXPATHLEN
  42. #  define ID3_PATH_LENGTH   (MAXPATHLEN + 1)
  43. #elif   defined (PATH_MAX)
  44. #  define ID3_PATH_LENGTH   (PATH_MAX + 1)
  45. #else   /* !MAXPATHLEN */
  46. #  define ID3_PATH_LENGTH   (2048 + 1)
  47. #endif  /* !MAXPATHLEN && !PATH_MAX */
  48.  
  49. #ifndef min
  50.   template<typename T>
  51.   const T& min(const T& a, const T& b)
  52.   {
  53.     return (a < b) ? a : b;
  54.   }
  55. #endif
  56.  
  57. #ifndef max
  58.   template<typename T>
  59.   const T& max(const T& a, const T& b)
  60.   {
  61.     return (b < a) ? a : b;
  62.   }
  63. #endif
  64.  
  65. #ifndef mid
  66.   template<typename T>
  67.   const T& mid(const T& lo, const T& mid, const T& hi)
  68.   {
  69.     return max(lo, min(mid, hi));
  70.   }
  71. #endif
  72.  
  73. #ifndef abs
  74.   template<typename T>
  75.   T abs(const T& a)
  76.   {
  77.     return (a < T(0)) ? -a : a;
  78.   }
  79. #endif
  80.  
  81.   size_t ID3_C_EXPORT renderNumber(uchar *buffer, uint32 val, size_t size = sizeof(uint32));
  82.   String ID3_C_EXPORT renderNumber(uint32 val, size_t size = sizeof(uint32));
  83.  
  84.   String ID3_C_EXPORT toString(uint32 val);
  85.   WString ID3_C_EXPORT toWString(const unicode_t[], size_t);
  86.   
  87.   size_t ID3_C_EXPORT ucslen(const unicode_t *unicode);
  88.   String ID3_C_EXPORT convert(String data, ID3_TextEnc, ID3_TextEnc);
  89.  
  90.   // file utils
  91.   size_t ID3_C_EXPORT getFileSize(fstream&);
  92.   size_t ID3_C_EXPORT getFileSize(ifstream&);
  93.   size_t ID3_C_EXPORT getFileSize(ofstream&);
  94.   ID3_Err ID3_C_EXPORT createFile(String, fstream&);
  95.   ID3_Err ID3_C_EXPORT openWritableFile(String, fstream&);
  96.   ID3_Err ID3_C_EXPORT openWritableFile(String, ofstream&);
  97.   ID3_Err ID3_C_EXPORT openReadableFile(String, fstream&);
  98.   ID3_Err ID3_C_EXPORT openReadableFile(String, ifstream&);
  99.  
  100. };
  101.   
  102. #endif /* _ID3LIB_UTILS_H_ */
  103.  
  104.